﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sinacor.Infra.Service.Validation.BusinessRules;

namespace Sinacor.Servico.Bovespa.Corretagem.BusinessLogic.BusinessRuleValidation
{
    /// <summary>
    /// Validacao
    /// </summary>
    public class ValidacaoExclusaoFaixaCorretagem : BaseBusinessRuleValidation<BusinessEntity.Parameter.FiltroFaixaCorretagemChave>, IBusinessRuleValidation
    {
        #region Campos
        private int _erroValidacaoExclusaoUltimaFaixa = 109464;
        private int _erroObjetoNulo = 109463;
        #endregion

        #region Propriedades
        /// <summary>
        /// ErroValidacaoExclusaoUltimaFaixa
        /// </summary>
        public int ErroValidacaoExclusaoUltimaFaixa
        {
            get { return _erroValidacaoExclusaoUltimaFaixa; }
            set { _erroValidacaoExclusaoUltimaFaixa = value; }
        }
        /// <summary>
        /// ErroObjetoNulo
        /// </summary>
        public int ErroObjetoNulo
        {
            get { return _erroObjetoNulo; }
            set { _erroObjetoNulo = value; }
        }
        #endregion

        #region IBusinessRuleValidation Members
        /// <summary>
        /// Retorna a Lista de erros
        /// </summary>
        /// <returns></returns>
        public List<Sinacor.Infra.Common.Validation.ValidationError> GetErrors()
        {
            return base.ErrorsList;
        }

        /// <summary>
        /// Validacao
        /// </summary>
        public void Validate()
        {
            if (base.EntityToValidate != null)
            {
                int numeroUltimaFaixa = new ResourceAccess.FaixaCorretagem().ObterNumeroUltimaFaixa(base.EntityToValidate.DataInicial.Value).Value;
                if (base.EntityToValidate.NumeroFaixa != numeroUltimaFaixa)
                    base.AddValidationError(ErroValidacaoExclusaoUltimaFaixa);

               

            }
            else
                base.AddValidationError(ErroObjetoNulo);
        }

        #endregion
    }
}
